import type { App } from 'vue';

import { 
    create,
    NButton,
    NConfigProvider,
    NNotificationProvider,
    NMessageProvider,
    NGlobalStyle,
    NLoadingBarProvider,
    NEl,
    NCard,
    NLayout,
    NLayoutSider,
    NLayoutHeader,
    NLayoutContent,
    NLayoutFooter,
    NMenu,
    NIcon,
    NGradientText,
    NAvatar,
    NSpace,
    NDropdown,
    NPageHeader,
    NGrid,
    NGridItem,
    NGi,
    NStatistic,
    NBreadcrumb,
    NDivider,
    NSkeleton,
    NTag,
    NDataTable,
    NResult,
    NDrawer,
    NDrawerContent,
    NThing,
    NList,
    NListItem,
    NModal,
    NForm,
    NFormItem,
    NInput,
    NFormItemGridItem,
    NDatePicker,
} from 'naive-ui'

export default function setupNaiveUI(app: App) {
    const commonNaive = create({
        components: [
            NButton,
            NConfigProvider,
            NNotificationProvider,
            NMessageProvider,
            NGlobalStyle,
            NLoadingBarProvider,
            NEl,
            NCard,
            NLayout,
            NLayoutSider,
            NLayoutHeader,
            NLayoutContent,
            NLayoutFooter,
            NMenu,
            NIcon,
            NGradientText,
            NAvatar,
            NSpace,
            NDropdown,
            NPageHeader,
            NGrid,
            NGridItem,
            NGi,
            NStatistic,
            NBreadcrumb,
            NDivider,
            NSkeleton,
            NTag,
            NDataTable,
            NResult,
            NDrawer,
            NDrawerContent,
            NThing,
            NList,
            NListItem,
            NModal,
            NForm,
            NFormItem,
            NInput,
            NFormItemGridItem,
            NDatePicker
        ],
    })
    app.use(commonNaive);
}